首页 > 试题广场 >

移掉 K 位数字

[编程题]移掉 K 位数字
  • 热度指数:4099 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个以字符串表示的数字 num 和一个数字 k ,从 num 中移除 k 位数字,使得剩下的数字最小。如果可以删除全部数字,则结果为 0。
1.num仅有数字组成
2.num是合法的数字,不含前导0
3.删除之后的num,请去掉前导0(不算在移除次数中)

数据范围:num的长度满足 ,保证 num 中仅包含 0~9 的十进制数
示例1

输入

"1432219",3

输出

"1219"

说明

移除 4 3 2 后剩下 1219   
示例2

输入

"10",1

输出

"0"
示例3

输入

"100999",3

输出

"9"
function removeKnums( num ,  k ) {
    // write code here
    const stack=[]
    for(let i of num){
        while(k>0&&stack.length&&stack[stack.length-1]>i){
            stack.pop()
            k--
        }
        if(i!=='0'||stack.length!==0){
            stack.push(i)
        }
    }
    while(k>0){
        stack.pop()
        k--
    }
    return stack.length===0?'0':stack.join('')
}
发表于 2023-06-28 21:28:30 回复(0)